Account.withTransaction { status -> def source = Account.get(params.from) def dest = Account.get(params.to) def amount = params.amount.toInteger() if(source.active) { source.balance -= amount if(dest.active) { dest.amount += amount } else { status.setRollbackOnly() } } }
withTransaction
使用块或者闭包获得Spring的TransactionStatus对象,它可以被程序用来回滚事务。
更多信息可参考用户手册的Programmatic Transactions章节。